package com.frame.config;

/**
 * @author LRC
 * @createDate 2015年5月22日
 * @description 系统参数配置
 */
public class SystemParamsConfig {
	
	/**
	 * 系统管理配置参数
	 */
	private ManagerParam mp = null;
	
	/**
	 * @author LRC
	 * @createDate 2015年5月22日
	 * @description 配置参数内部类 
	 */
	public class ManagerParam{
		/**
		 * 登录失败次数账号锁定，默认允许5次
		 */
		public Integer loginFailedNum = 5;
		/**
		 * 锁定时间，以毫秒为单位 ，默认三分钟
		 */
		public Long lockingTime = 3*60*1000L;
		/**
		 * 重置密码，默认666666
		 */
		public String password = "666666";
		private ManagerParam(){
			//从数据库查询到相关的参数填充到
			
		}
	}
	
	private static SystemParamsConfig instance = null;
	/**
	 * 单例对象
	 */
	private SystemParamsConfig(){
		//初始化所有配置对象
		mp = new ManagerParam();
		
	}
	
	/**
	 * @updateTeim 2015年5月22日下午11:10:30
	 * @description 懒加载，通过静态方法获取单例对象 
	 * @return
	 */
	public static SystemParamsConfig getInstance(){
		if(instance==null){
			instance = new SystemParamsConfig();
		}
		return instance;
	}
	
	/**
	 * @updateTeim 2015年5月22日下午11:11:30
	 * @description 销毁单例对象，以便重新加载
	 */
	public static void destroyInstance(){
		instance = null;
	}
	
	/**
	 * @updateTeim 2015年5月23日上午11:48:15
	 * @description 销毁某个参数，以便重新初始化 
	 */
	public static void initParam(String name){
		getInstance().destroyParam(name);
	}
	
	/**
	 * @updateTeim 2015年5月23日上午11:48:37
	 * @description 销毁具体的某个参数对象
	 * @param name
	 */
	private void destroyParam(String name){
		switch (name) {
		case "ManagerParam":
			mp = null;
			break;

		default:
			break;
		}
	}
	
	/**
	 * @updateTeim 2015年5月23日上午11:44:05
	 * @description 获取系统管理参数 
	 * @return
	 */
	public ManagerParam getManagerParam(){
		if(mp==null){
			mp = new ManagerParam();
		}
		return mp;
	}
}
